1. Field of the Invention
The disclosure relates generally to managing networks and, in particular, to selecting which domain name system servers of a plurality of networks that a client device uses for domain name system services.
2. Description of the Related Art
The Internet is a system of interconnected public and private computer networks. Computing devices communicate with each other over the Internet using a number of Internet protocols. These Internet protocols identify the computing devices and other resources on the Internet using Internet Protocol (IP) addresses. However, IP addresses are numeric, hard to remember, and can change over time.
To resolve the problems with IP addresses, a hierarchical distributed naming system called Domain Name System (DNS) is used. The primary function of DNS is to translate or map domain names representing computing devices and other resources to the actual IP addresses. Users of DNS register domain names with DNS and then configure associated IP addresses for each of the registered domain names. Domain names are selected by their owners to be easy to remember and typically do not change over time. DNS uses DNS servers to perform the functions of DNS.
DNS is designed such that each DNS server on the Internet is able to translate registered domain names to IP addresses. In practice, private computer networks often do not wish to register internal domain names and IP addresses with Internet based DNS. One work around to this problem is for private computer networks to host internal DNS servers configured to keep the domain names and IP addresses of the private computer network private. With this work around, client computing devices use one set of internal DNS servers for both internal and external domain names. Using internal DNS servers is a satisfactory workaround as long as the internal DNS servers have access to all of the desired domain names. However, this workaround fails when a situation arises where two or more private networks are involved and the private networks do not share registered domain names with each other. For example, when a client computing device is concurrently connected to a number of public and virtual private networks, it is unlikely that a single set of DNS servers hosted by any one particular network will have access to all of the domain names of all of the networks in use by the client computing device.
Another approach to solving this problem includes sending translation requests to multiple DNS servers. However, sending translation requests to multiple DNS servers may violate a desire for privacy when the private domain names in use by the client computing devices are sent to DNS servers outside of the private network where the private domain names are located. Additionally, performance of networks is degraded with this approach due to the resulting additional network traffic.
Still another approach involves using a DNS proxy to route translation requests to pre-defined DNS servers based on pre-defined domain names. Proxy solutions, however, require user configuration to map particular domain names to particular DNS servers. Proxy solutions fail when the configuration for the proxy solution is incomplete, incorrect, or out of date.
Therefore, it would be desirable to have a method, apparatus, and computer program product that takes into account at least some of the issues discussed above.